"""
功能描述 ：
编写人 ：
编写日期 ：
实现逻辑 ：
    1- ......
        1.1- ......
    2- ......
        2.1- ......
"""
# 1、打印小猫爱吃鱼，小猫要喝水
# class cat():
#     def eat(self):
#         print('爱吃鱼')
#     def drink(self):
#         print('要喝水')
# Tom = cat()
# Tom.drink()
# Tom.eat()

# 2、小明爱跑步，爱吃东西。
# 1）小明体重75.0公斤
# 2）每次跑步会减肥0.5公斤
# 3）每次吃东西体重会增加1公斤
# 4）小美的体重是45.0公斤
# class Person():
#     def __init__(self,name,weight):
#         self.name = name
#         self.weight = weight
#     def __str__(self):
#         return (f'名字叫{self.name},体重是{self.weight}')
#     def run(self):
#         print(f'{self.name}爱跑步')
#         self.weight -= 0.5
#     def eat(self):
#         print(f'{self.name}爱吃东西')
#         self.weight += 1
# xx = Person('小明',75)
# xx.run()
# xx.eat()
# print(xx)
# #小美
# xm = Person('小美',45)
# xm.run()
# xm.eat()
# print(xm)

# 3、摆放家具
# 需求：
# 1）.房子有户型，总面积和家具名称列表
#    新房子没有任何的家具
# 2）.家具有名字和占地面积，其中
#    床：占4平米
#    衣柜：占2平面
#    餐桌：占1.5平米
# 3）.将以上三件家具添加到房子中
# 4）.打印房子时，要求输出:户型，总面积，剩余面积，家具名称列表
class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return '[%s] 占地 %.2f' % (self.name, self.area)

class House:
    def __init__(self, house_type, area):
        self.house_type = house_type
        self.area = area
        self.free_area = area
        self.item_list = []

    def __str__(self):
        return '户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s' % (self.house_type, self.area, self.free_area, self.item_list)

    def add_item(self, item):
        print('要添加 %s' % item)
        if item.area > self.free_area:
            print ('%s 的面积太大了，无法添加' % item.name)
            return
        self.item_list.append(item.name)
        self.free_area -= item.area

bed = HouseItem('bed', 400)
print(bed)
chest = HouseItem('chest', 2)
print(chest)
table = HouseItem('table', 1.5)
print(table)


my_home = House('两室一厅', 60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)

# 4.士兵开枪
# 需求：
# 1）.士兵瑞恩有一把AK47
# 2）.士兵可以开火(士兵开火扣动的是扳机)
# 3）.枪 能够 发射子弹(把子弹发射出去)
# 4）.枪 能够 装填子弹 --增加子弹的数量
class Gun:
    def __init__(self, model):
        self.model = model
        self.bullet_count = 0

    def add_bullet(self, count):
        self.bullet_count += count

    def shoot(self):
        if self.bullet_count <= 0:
            print ('[%s] 没有子弹了...' % self.model)
            return
        self.bullet_count -= 1
        print ('[%s] 突突突...[%d]' %(self.model,self.bullet_count))

class Soldier:
    def __init__(self,name):
        self.name = name
        self.gun = None

    def fire(self):
        if self.gun == None:
            print ('[%s] 还没有枪' %self.name)
            return
        print ('go!!! [%s]' %self.name)
        self.gun.add_bullet(50)
        self.gun.shoot()


ak47 = Gun('AK47')
ryan = Soldier('Ryan')
ryan.gun = ak47
ryan.fire()